const {prisma, minioClient, mqttClient}=require('./utils.js')

class TalentController{
    /**
     * GET：获取专家信息
     * @param {*} req.query.user_id 用户id
     * @returns
     * 500 内部错误
     * 204 不是专家
     * 200 返回专家信息
     */
    find(req,res,next){
        var user_id=Number(req.params.user_id)
        prisma.talent.findFirst({
            where:{
                user_id:user_id,
                audit_status:'PASSED'
            },
            orderBy:[{create_at:'desc'}]
        }).then((talent)=>{
            if(talent==null){
                res.send(204)
            }else{
                res.send(200,talent)
            }
            next()
        }).catch((e)=>{
            res.send(500)
            next()
        })
    }

    /**
     * POST：创建专家记录（状态为WAITING）
     * @param {*} req.body.user_id
     * @param {*} req.body.id_code
     * @param {*} req.body.mobile
     * @param {*} req.body.email
     * @param {*} req.body.password1
     * @param {*} req.body.password2
     * @returns
     * 406 数据格式有误
     * 409 unique约束冲突
     * 500 内部错误
     * 200 返回用户信息
     */
    create(req,res,next){
        prisma.talent.create({
            data:req.body
        }).then((talent)=>{
            res.send(200,talent)
            next()
        }).catch((e)=>{
            console.log(e)
            res.send(500)
            next()
        })
    }

    /**
     * PUT：修改头像
     * @param {*} req.body.user_id
     * @param {*} req.body.file
     * @returns
     * 500 内部错误
     * 200 返回头像名
     */
    change_avatar(req,res,next){
        console.log(req.params)
        let talent_id=req.params.talent_id
        console.log(req.files)
        let avatar=req.files.avatar

        var name=talent_id+'-'+Date.now()

        minioClient.fPutObject('talent-avatar',name, avatar.path,{'Content-Type':'image/png'}, function(err,objInfo){
            if(err){
                console.log(err)
                res.send(500,{errmsg:'minio存储失败'})
                next()
            }else{
                prisma.talent.update({
                    where:{id:Number(talent_id)},
                    data:{photo:name}
                }).then(talent=>{
                    res.send(200,{name:name})
                    next()
                }).catch(e=>{
                    res.send(500,{errmsg:'数据库错误'})
                    console.log(e)
                    next()
                })
            }
        })
    }
}

module.exports=new TalentController()